GDK_MODIFIER_MASK
<SUBSECTION>
-gdk_surface_get_support_multidevice
-gdk_surface_set_support_multidevice
gdk_surface_get_device_cursor
gdk_surface_set_device_cursor
gtk_widget_is_drawable
gtk_widget_set_receives_default
gtk_widget_get_receives_default
-gtk_widget_set_support_multidevice
-gtk_widget_get_support_multidevice
gtk_widget_get_realized
gtk_widget_get_mapped
gtk_widget_device_is_shadowed
gdk_display_beep (surface->display);
}
-/**
- * gdk_surface_set_support_multidevice:
- * @surface: a #GdkSurface.
- * @support_multidevice: %TRUE to enable multidevice support in @surface.
- *
- * This function will enable multidevice features in @surface.
- *
- * Multidevice aware surfaces will need to handle properly multiple,
- * per device enter/leave events, device grabs and grab ownerships.
- **/
-void
-gdk_surface_set_support_multidevice (GdkSurface *surface,
- gboolean support_multidevice)
-{
- g_return_if_fail (GDK_IS_SURFACE (surface));
-
- if (GDK_SURFACE_DESTROYED (surface))
- return;
-
- if (surface->support_multidevice == support_multidevice)
- return;
-
- surface->support_multidevice = support_multidevice;
-
- /* FIXME: What to do if called when some pointers are inside the surface ? */
-}
-
-/**
- * gdk_surface_get_support_multidevice:
- * @surface: a #GdkSurface.
- *
- * Returns %TRUE if the surface is aware of the existence of multiple
- * devices.
- *
- * Returns: %TRUE if the surface handles multidevice features.
- **/
-gboolean
-gdk_surface_get_support_multidevice (GdkSurface *surface)
-{
- g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE);
-
- if (GDK_SURFACE_DESTROYED (surface))
- return FALSE;
-
- return surface->support_multidevice;
-}
-
void
_gdk_display_set_surface_under_pointer (GdkDisplay *display,
GdkDevice *device,
GDK_AVAILABLE_IN_ALL
void gdk_surface_thaw_updates (GdkSurface *surface);
-GDK_AVAILABLE_IN_ALL
-void gdk_surface_set_support_multidevice (GdkSurface *surface,
- gboolean support_multidevice);
-GDK_AVAILABLE_IN_ALL
-gboolean gdk_surface_get_support_multidevice (GdkSurface *surface);
-
GDK_AVAILABLE_IN_ALL
GdkFrameClock* gdk_surface_get_frame_clock (GdkSurface *surface);
guint destroyed : 2;
- guint support_multidevice : 1;
guint in_update : 1;
guint frame_clock_events_paused : 1;
guint autohide : 1;
GdkDevice *device = devices[i];
GdkSurface *from_surface, *to_surface;
- /* Do not propagate events more than once to
- * the same surfaces if non-multidevice aware.
- */
if (!from)
from_surface = NULL;
else
- {
- from_surface = _gtk_widget_get_device_surface (from, device);
-
- if (from_surface &&
- !gdk_surface_get_support_multidevice (from_surface) &&
- g_list_find (info->notified_surfaces, from_surface))
- from_surface = NULL;
- }
+ from_surface = _gtk_widget_get_device_surface (from, device);
if (!to)
to_surface = NULL;
else
- {
- to_surface = _gtk_widget_get_device_surface (to, device);
-
- if (to_surface &&
- !gdk_surface_get_support_multidevice (to_surface) &&
- g_list_find (info->notified_surfaces, to_surface))
- to_surface = NULL;
- }
+ to_surface = _gtk_widget_get_device_surface (to, device);
if (from_surface || to_surface)
{
g_signal_emit (widget, widget_signals[REALIZE], 0);
- if (priv->multidevice)
- {
- GdkSurface *surface = gtk_widget_get_surface (widget);
-
- gdk_surface_set_support_multidevice (surface, TRUE);
- }
-
if (priv->context)
gtk_style_context_set_scale (priv->context, gtk_widget_get_scale_factor (widget));
else
device = devices[i];
surface = _gtk_widget_get_device_surface (widget, device);
- /* Do not propagate more than once to the
- * same surface if non-multidevice aware.
- */
- if (!gdk_surface_get_support_multidevice (surface) &&
- g_list_find (event_surfaces, surface))
- continue;
-
if (!gtk_widget_is_sensitive (widget))
_gtk_widget_synthesize_crossing (widget, NULL, device,
GDK_CROSSING_STATE_CHANGED);
return priv->baseline - margin.top - border.top - padding.top;
}
-/**
- * gtk_widget_get_support_multidevice:
- * @widget: a #GtkWidget
- *
- * Returns %TRUE if @widget is multiple pointer aware. See
- * gtk_widget_set_support_multidevice() for more information.
- *
- * Returns: %TRUE if @widget is multidevice aware.
- **/
-gboolean
-gtk_widget_get_support_multidevice (GtkWidget *widget)
-{
- GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
-
- return priv->multidevice;
-}
-
-/**
- * gtk_widget_set_support_multidevice:
- * @widget: a #GtkWidget
- * @support_multidevice: %TRUE to support input from multiple devices.
- *
- * Enables or disables multiple pointer awareness. If this setting is %TRUE,
- * @widget will start receiving multiple, per device enter/leave events. Note
- * that if custom #GdkSurfaces are created in #GtkWidget::realize,
- * gdk_surface_set_support_multidevice() will have to be called manually on them.
- **/
-void
-gtk_widget_set_support_multidevice (GtkWidget *widget,
- gboolean support_multidevice)
-{
- GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- priv->multidevice = (support_multidevice == TRUE);
-
- if (_gtk_widget_get_realized (widget))
- {
- GdkSurface *surface = gtk_widget_get_surface (widget);
-
- if (surface)
- gdk_surface_set_support_multidevice (surface, support_multidevice);
- }
-}
-
/**
* gtk_widget_set_opacity:
* @widget: a #GtkWidget
gboolean gtk_widget_compute_expand (GtkWidget *widget,
GtkOrientation orientation);
-
-/* Multidevice support */
-GDK_AVAILABLE_IN_ALL
-gboolean gtk_widget_get_support_multidevice (GtkWidget *widget);
-GDK_AVAILABLE_IN_ALL
-void gtk_widget_set_support_multidevice (GtkWidget *widget,
- gboolean support_multidevice);
-
/* Accessibility support */
GDK_AVAILABLE_IN_ALL
void gtk_widget_class_set_accessible_type (GtkWidgetClass *widget_class,
guint has_grab : 1;
guint shadowed : 1;
guint child_visible : 1;
- guint multidevice : 1;
guint can_target : 1;
/* Queue-resize related flags */